import java.util.Stack;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 123
 * Date: 2023-05-28
 * Time: 21:17
 */
public class MinStack {
//    MinStack() 初始化堆栈对象。
//    void push(int val) 将元素val推入堆栈。
//    void pop() 删除堆栈顶部的元素。
//    int top() 获取堆栈顶部的元素。
//    int getMin() 获取堆栈中的最小元素。

    Stack<Integer> stack1 ;
    Stack<Integer> stack2 ;

    public  MinStack(){
        this.stack1 = new Stack<>();
        this.stack2 = new Stack<>() ;

    }
    void  push(int val){
        if(this.stack1.empty() && this.stack2.empty()){
            this.stack1.push(val) ;
            this.stack2.push(val) ;
        }else {
            if(val <= this.stack2.peek()){
                this.stack1.push(val);
                this.stack2.push(val);
            }else {
                this.stack1.push(val);
            }
        }

    }
    int top() {
        if(this.stack1.empty()){
            return -1 ;
        }
        return this.stack1.peek() ;
    }
    public void pop(){
        if(this.stack1.empty()){
            return ;
        }
        if(this.stack1.pop() == this.stack2.peek()){
            this.stack2.pop() ;
        }
    }
    public int getMin(){
        if(this.stack1.empty()){
            return -1 ;
        }else {
            return this.stack2.peek() ;
        }


    }

}
